home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Diamond Collection / The Diamond Collection (Software Vault)(Digital Impact).ISO / cdr43 / tickets.zip / LOTTERY.PAS < prev   
Pascal/Delphi Source File  |  1995-03-31  |  25KB  |  540 lines

  1. PROGRAM Scratch_Tickets;
  2.  
  3. USES crt, uppecase;
  4.  
  5. TYPE
  6.   Ticket = RECORD
  7.              Name : String[20];
  8.              Cost : Byte;
  9.              Winnings : Integer;
  10.              Tickets_Bought : Integer;
  11.            END;
  12.   Ticket_Array = Array[1..800] of Ticket;
  13.  
  14. VAR
  15.   Lottery : Ticket_Array;
  16.   ScratchFile : Text;
  17.   ch : Char;
  18.   Prog_Done, TicketMatch : Boolean;
  19.   x, a, count, TempBought, TempWinnings, b, TempCost : Integer;
  20.   TempName : String[20];
  21.   S : String;
  22.   TotalTickets, TotalWinnings, TotalSpent : Integer;
  23.  
  24. BEGIN
  25.   REPEAT
  26.     TotalSpent := 0;
  27.     TotalTickets := 0;
  28.     TotalWinnings := 0;
  29.     Prog_Done := false;
  30.     Assign (ScratchFile, 'lottery.dat');
  31.     {$I-}
  32.     reset (ScratchFile);
  33.     {$I+}
  34.     IF IOResult <> 0 THEN
  35.       BEGIN
  36.         rewrite (ScratchFile);
  37.         close (ScratchFile);
  38.         reset (ScratchFile);
  39.       END;
  40.     x := 0;
  41.     count := 0;
  42.     WHILE not EOF(ScratchFile) DO
  43.       BEGIN
  44.         x := x + 1;
  45.         count := count + 1;
  46.         Readln (ScratchFile, Lottery[x].Name);
  47.         Readln (ScratchFile, Lottery[x].Cost);
  48.         Readln (ScratchFile, Lottery[x].Winnings);
  49.         Readln (ScratchFile, Lottery[x].Tickets_Bought);
  50.         TotalTickets := TotalTickets + Lottery[x].Tickets_Bought;
  51.         TotalWinnings := TotalWinnings + Lottery[x].Winnings;
  52.         TotalSpent := TotalSpent + (Lottery[x].Cost * Lottery[x].Tickets_Bought);
  53.       END;
  54.     Close (ScratchFile);
  55.     CLRSCR;
  56.     GOTOXY (1, 8);
  57.     WRITELN (' ':21, '*************************************');
  58.     WRITELN (' ':21, '*                                   *');
  59.     WRITELN (' ':21, '*    A) Enter Stats                 *');
  60.     WRITELN (' ':21, '*    B) Review $1 Tickets           *');
  61.     WRITELN (' ':21, '*    C) Review $2 Tickets           *');
  62.     WRITELN (' ':21, '*    D) Review $5 Tickets           *');
  63.     WRITELN (' ':21, '*    E) Review ALL                  *');
  64.     WRITELN (' ':21, '*    F) Exit                        *');
  65.     WRITELN (' ':21, '*                                   *');
  66.     WRITELN (' ':21, '*************************************');
  67.     WRITELN;
  68.     WRITE (' ':21, '  Make Selection: ');
  69.     REPEAT
  70.       ch := ReadKey
  71.     UNTIL (ch = 'a') or (ch = 'A') or (ch = 'b') or (ch = 'B') or (ch = 'c') or
  72.           (ch = 'C') or (ch = 'd') or (ch = 'D') or (ch = 'e') or (ch = 'E') or
  73.           (ch = 'F') or (ch = 'f');
  74.     IF (Ch = 'A') or (ch = 'a') THEN
  75.       BEGIN
  76.         CLRSCR;
  77.         WRITE ('What''s the Ticket''s name? ');
  78.         readln (TempName);
  79.         TempName := UpperCase (TempName);
  80.         FOR a := 1 to x DO
  81.           IF (Lottery[a].Name = TempName) THEN
  82.             BEGIN
  83.               TicketMatch := true;
  84.               write ('How many tickets did you buy? ');
  85.               readln (TempBought);
  86.               write ('How much did you win? ');
  87.               readln (TempWinnings);
  88.               Lottery[a].Tickets_Bought := Lottery[a].Tickets_Bought + TempBought;
  89.               Lottery[a].Winnings := Lottery[a].Winnings + TempWinnings;
  90.             END;
  91.         IF not TicketMatch THEN
  92.           BEGIN
  93.             Write ('Is this a new ticket? (Y/N) ');
  94.             REPEAT
  95.               ch := readkey;
  96.             UNTIL (ch = 'Y') or (ch = 'y') or (ch = 'n') or (ch = 'N');
  97.             IF (ch = 'y') or (ch = 'Y') THEN
  98.               BEGIN
  99.                 writeln;
  100.                 Lottery[x+1].Name := TempName;
  101.                 WRITE ('How much does the ticket cost? (1/2/5) ');
  102.                 readln (Lottery[x+1].Cost);
  103.                 WRITE ('How many tickets did you buy? ');
  104.                 readln (Lottery[x+1].Tickets_Bought);
  105.                 WRITE ('How much did you win? ');
  106.                 readln (Lottery[x+1].Winnings);
  107.                 count := count + 1;
  108.               END;
  109.           END;
  110.         rewrite (ScratchFile);
  111.         FOR x := 1 to count DO
  112.           BEGIN
  113.             writeln (ScratchFile, Lottery[x].Name);
  114.             writeln (ScratchFile, Lottery[x].Cost);
  115.             writeln (ScratchFile, Lottery[x].Winnings);
  116.             writeln (ScratchFile, Lottery[x].Tickets_Bought);
  117.           END;
  118.         close (ScratchFile);
  119.       END
  120.     ELSE IF (ch = 'B') or (ch = 'b') THEN
  121.       BEGIN
  122.         CLRSCR;
  123.         WRITELN ('Ticket                   Cost      Winnings  Tickets Bought AVG/Ticket  AVG/$1');
  124.         writeln ('------------------------------------------------------------------------------');
  125.         FOR a := 1 to count DO
  126.           IF (Lottery[a].Cost = 1) THEN
  127.             BEGIN
  128.               WRITE (Lottery[a].Name, ' ':27-length(lottery[a].name));
  129.               WRITE (Lottery[a].Cost);
  130.               Write (' ':9);
  131.               write (lottery[a].winnings);
  132.               Str (Lottery[a].Winnings, S);
  133.               write (' ':(10 - length(S)));
  134.               write (lottery[a].Tickets_Bought);
  135.               Str (Lottery[a].Tickets_Bought, S);
  136.               write (' ':(14 - length(S)));
  137.               write ((lottery[a].winnings / lottery[a].tickets_bought):5:3);
  138.               writeln (' ':7, (lottery[a].winnings / (lottery[a].tickets_bought * lottery[a].cost)):5:3);
  139.             END;
  140.         writeln;
  141.         writeln ('Press Enter...');
  142.         readln;
  143.       END
  144.     ELSE IF (ch = 'C') or (ch = 'c') THEN
  145.       BEGIN
  146.         CLRSCR;
  147.         WRITELN ('Ticket                   Cost      Winnings  Tickets Bought AVG/Ticket  AVG/$1');
  148.         writeln ('------------------------------------------------------------------------------');
  149.         FOR a := 1 to count DO
  150.           IF (Lottery[a].Cost = 2) THEN
  151.             BEGIN
  152.               WRITE (Lottery[a].Name, ' ':27-length(lottery[a].name));
  153.               WRITE (Lottery[a].Cost);
  154.               Write (' ':9);
  155.               write (lottery[a].winnings);
  156.               Str (Lottery[a].Winnings, S);
  157.               write (' ':(10 - length(S)));
  158.               write (lottery[a].Tickets_Bought);
  159.               Str (Lottery[a].Tickets_Bought, S);
  160.               write (' ':(14 - length(S)));
  161.               write ((lottery[a].winnings / lottery[a].tickets_bought):5:3);
  162.               writeln (' ':7, (lottery[a].winnings / (lottery[a].tickets_bought * lottery[a].cost)):5:3);
  163.             END;
  164.         writeln;
  165.         write ('Press Enter...');
  166.         readln;
  167.       END
  168.     ELSE IF (ch = 'D') or (ch = 'd') THEN
  169.       BEGIN
  170.         CLRSCR;
  171.         WRITELN ('Ticket                   Cost      Winnings  Tickets Bought AVG/Ticket  AVG/$1');
  172.         writeln ('------------------------------------------------------------------------------');
  173.         FOR a := 1 to count DO
  174.           IF (Lottery[a].Cost = 5) THEN
  175.             BEGIN
  176.               WRITE (Lottery[a].Name, ' ':27-length(lottery[a].name));
  177.               WRITE (Lottery[a].Cost);
  178.               Write (' ':9);
  179.               write (lottery[a].winnings);
  180.               Str (Lottery[a].Winnings, S);
  181.               write (' ':(10 - length(S)));
  182.               write (lottery[a].Tickets_Bought);
  183.               Str (Lottery[a].Tickets_Bought, S);
  184.               write (' ':(14 - length(S)));
  185.               write ((lottery[a].winnings / lottery[a].tickets_bought):5:3);
  186.               writeln (' ':7, (lottery[a].winnings / (lottery[a].tickets_bought * lottery[a].cost)):5:3);
  187.             END;
  188.         writeln;
  189.         write ('Press Enter...');
  190.         readln;
  191.       END
  192.     ELSE IF (ch = 'E') or (ch = 'e') THEN
  193.       BEGIN
  194.         CLRSCR;
  195.         GOTOXY (1, 8);
  196.         WRITELN (' ':21, '*************************************');
  197.         WRITELN (' ':21, '*                                   *');
  198.         WRITELN (' ':21, '*    A) By Name                     *');
  199.         WRITELN (' ':21, '*    B) By Cost                     *');
  200.         WRITELN (' ':21, '*    C) By Winnings                 *');
  201.         WRITELN (' ':21, '*    D) By Tickets Bought           *');
  202.         WRITELN (' ':21, '*    E) By Average / Ticket         *');
  203.         WRITELN (' ':21, '*    F) By Average / $1             *');
  204.         WRITELN (' ':21, '*                                   *');
  205.         WRITELN (' ':21, '*************************************');
  206.         WRITELN;
  207.         WRITE (' ':21, '  Make Selection: ');
  208.         REPEAT
  209.           ch := ReadKey
  210.         UNTIL (ch = 'a') or (ch = 'A') or (ch = 'b') or (ch = 'B') or (ch = 'c') or
  211.               (ch = 'C') or (ch = 'd') or (ch = 'D') or (ch = 'e') or (ch = 'E') or
  212.               (ch = 'F') or (ch = 'f');
  213.         IF (ch = 'a') or (ch = 'A') THEN
  214.           BEGIN
  215.             CLRSCR;
  216.             FOR a := 1 to count DO
  217.               FOR b := 1 to (count - 1) DO
  218.                 IF (Lottery[b].Name > Lottery[b+1].Name) THEN
  219.                   BEGIN
  220.                     TempName := Lottery[b].Name;
  221.                     TempCost := Lottery[b].Cost;
  222.                     TempWinnings := Lottery[b].Winnings;
  223.                     TempBought := Lottery[b].Tickets_Bought;
  224.                     Lottery[b].Name := Lottery[b+1].Name;
  225.                     Lottery[b].Cost := Lottery[b+1].Cost;
  226.                     Lottery[b].Winnings := Lottery[b+1].Winnings;
  227.                     Lottery[b].Tickets_Bought := Lottery[b+1].Tickets_Bought;
  228.                     Lottery[b+1].Name := TempName;
  229.                     Lottery[b+1].Cost := TempCost;
  230.                     Lottery[b+1].Winnings := TempWinnings;
  231.                     Lottery[b+1].Tickets_Bought := TempBought;
  232.                   END;
  233.             WRITELN ('Ticket                   Cost      Winnings  Tickets Bought AVG/Ticket  AVG/$1');
  234.             writeln ('------------------------------------------------------------------------------');
  235.             FOR a := 1 to count do
  236.               BEGIN
  237.                 WRITE (Lottery[a].Name, ' ':27-length(lottery[a].name));
  238.                 WRITE (Lottery[a].Cost);
  239.                 Write (' ':9);
  240.                 write (lottery[a].winnings);
  241.                 Str (Lottery[a].Winnings, S);
  242.                 write (' ':(10 - length(S)));
  243.                 write (lottery[a].Tickets_Bought);
  244.                 Str (Lottery[a].Tickets_Bought, S);
  245.                 write (' ':(14 - length(S)));
  246.                 write ((lottery[a].winnings / lottery[a].tickets_bought):5:3);
  247.                 writeln (' ':7, (lottery[a].winnings / (lottery[a].tickets_bought * lottery[a].cost)):5:3);
  248.               END;
  249.             writeln;
  250.             writeln ('Press Enter...');
  251.             readln;
  252.             CLRSCR;
  253.             writeln ('Total Tickets Bought = ', TotalTickets);
  254.             writeln ('Total Spent = ', TotalSpent);
  255.             writeln ('Total Winnings = ', TotalWinnings);
  256.             writeln ('Net Difference = ', (TotalWinnings - TotalSpent));
  257.             IF (TotalTickets <> 0) AND (TotalSpent <> 0) THEN
  258.               BEGIN
  259.                 writeln ('Overall Average Per Ticket = ', (TotalWinnings/TotalTickets):5:3);
  260.                 writeln ('Overall Average Per $1 = ', (TotalWinnings/TotalSpent):5:3);
  261.               END;
  262.             writeln;
  263.             write ('Press Enter...');
  264.             readln;
  265.           END
  266.         ELSE IF (ch = 'b') or (ch = 'B') THEN
  267.           BEGIN
  268.             CLRSCR;
  269.             FOR a := 1 to count DO
  270.               FOR b := 1 to (count - 1) DO
  271.                 IF (Lottery[b].Cost > Lottery[b+1].Cost) THEN
  272.                   BEGIN
  273.                     TempName := Lottery[b].Name;
  274.                     TempCost := Lottery[b].Cost;
  275.                     TempWinnings := Lottery[b].Winnings;
  276.                     TempBought := Lottery[b].Tickets_Bought;
  277.                     Lottery[b].Name := Lottery[b+1].Name;
  278.                     Lottery[b].Cost := Lottery[b+1].Cost;
  279.                     Lottery[b].Winnings := Lottery[b+1].Winnings;
  280.                     Lottery[b].Tickets_Bought := Lottery[b+1].Tickets_Bought;
  281.                     Lottery[b+1].Name := TempName;
  282.                     Lottery[b+1].Cost := TempCost;
  283.                     Lottery[b+1].Winnings := TempWinnings;
  284.                     Lottery[b+1].Tickets_Bought := TempBought;
  285.                   END;
  286.             WRITELN ('Ticket                   Cost      Winnings  Tickets Bought AVG/Ticket  AVG/$1');
  287.             writeln ('------------------------------------------------------------------------------');
  288.             FOR a := 1 to count do
  289.               BEGIN
  290.                 WRITE (Lottery[a].Name, ' ':27-length(lottery[a].name));
  291.                 WRITE (Lottery[a].Cost);
  292.                 Write (' ':9);
  293.                 write (lottery[a].winnings);
  294.                 Str (Lottery[a].Winnings, S);
  295.                 write (' ':(10 - length(S)));
  296.                 write (lottery[a].Tickets_Bought);
  297.                 Str (Lottery[a].Tickets_Bought, S);
  298.                 write (' ':(14 - length(S)));
  299.                 write ((lottery[a].winnings / lottery[a].tickets_bought):5:3);
  300.                 writeln (' ':7, (lottery[a].winnings / (lottery[a].tickets_bought * lottery[a].cost)):5:3);
  301.               END;
  302.             writeln;
  303.             writeln ('Press Enter...');
  304.             readln;
  305.             CLRSCR;
  306.             writeln ('Total Tickets Bought = ', TotalTickets);
  307.             writeln ('Total Spent = ', TotalSpent);
  308.             writeln ('Total Winnings = ', TotalWinnings);
  309.             writeln ('Net Difference = ', (TotalWinnings - TotalSpent));
  310.             IF (TotalTickets <> 0) AND (TotalSpent <> 0) THEN
  311.               BEGIN
  312.                 writeln ('Overall Average Per Ticket = ', (TotalWinnings/TotalTickets):5:3);
  313.                 writeln ('Overall Average Per $1 = ', (TotalWinnings/TotalSpent):5:3);
  314.               END;
  315.             writeln;
  316.             write ('Press Enter...');
  317.             readln;
  318.           END
  319.         ELSE IF (ch = 'C') or (ch = 'c') THEN
  320.           BEGIN
  321.             CLRSCR;
  322.             FOR a := 1 to count DO
  323.               FOR b := 1 to (count - 1) DO
  324.                 IF (Lottery[b].Winnings < Lottery[b+1].Winnings) THEN
  325.                   BEGIN
  326.                     TempName := Lottery[b].Name;
  327.                     TempCost := Lottery[b].Cost;
  328.                     TempWinnings := Lottery[b].Winnings;
  329.                     TempBought := Lottery[b].Tickets_Bought;
  330.                     Lottery[b].Name := Lottery[b+1].Name;
  331.                     Lottery[b].Cost := Lottery[b+1].Cost;
  332.                     Lottery[b].Winnings := Lottery[b+1].Winnings;
  333.                     Lottery[b].Tickets_Bought := Lottery[b+1].Tickets_Bought;
  334.                     Lottery[b+1].Name := TempName;
  335.                     Lottery[b+1].Cost := TempCost;
  336.                     Lottery[b+1].Winnings := TempWinnings;
  337.                     Lottery[b+1].Tickets_Bought := TempBought;
  338.                   END;
  339.             WRITELN ('Ticket                   Cost      Winnings  Tickets Bought AVG/Ticket  AVG/$1');
  340.             writeln ('------------------------------------------------------------------------------');
  341.             FOR a := 1 to count do
  342.               BEGIN
  343.                 WRITE (Lottery[a].Name, ' ':27-length(lottery[a].name));
  344.                 WRITE (Lottery[a].Cost);
  345.                 Write (' ':9);
  346.                 write (lottery[a].winnings);
  347.                 Str (Lottery[a].Winnings, S);
  348.                 write (' ':(10 - length(S)));
  349.                 write (lottery[a].Tickets_Bought);
  350.                 Str (Lottery[a].Tickets_Bought, S);
  351.                 write (' ':(14 - length(S)));
  352.                 write ((lottery[a].winnings / lottery[a].tickets_bought):5:3);
  353.                 writeln (' ':7, (lottery[a].winnings / (lottery[a].tickets_bought * lottery[a].cost)):5:3);
  354.               END;
  355.             writeln;
  356.             writeln ('Press Enter...');
  357.             readln;
  358.             CLRSCR;
  359.             writeln ('Total Tickets Bought = ', TotalTickets);
  360.             writeln ('Total Spent = ', TotalSpent);
  361.             writeln ('Total Winnings = ', TotalWinnings);
  362.             writeln ('Net Difference = ', (TotalWinnings - TotalSpent));
  363.             IF (TotalTickets <> 0) AND (TotalSpent <> 0) THEN
  364.               BEGIN
  365.                 writeln ('Overall Average Per Ticket = ', (TotalWinnings/TotalTickets):5:3);
  366.                 writeln ('Overall Average Per $1 = ', (TotalWinnings/TotalSpent):5:3);
  367.               END;
  368.             writeln;
  369.             write ('Press Enter...');
  370.             readln;
  371.           END
  372.         ELSE IF (ch = 'd') or (ch = 'D') THEN
  373.           BEGIN
  374.             CLRSCR;
  375.             FOR a := 1 to count DO
  376.               FOR b := 1 to (count - 1) DO
  377.                 IF (Lottery[b].Tickets_Bought < Lottery[b+1].Tickets_Bought) THEN
  378.                   BEGIN
  379.                     TempName := Lottery[b].Name;
  380.                     TempCost := Lottery[b].Cost;
  381.                     TempWinnings := Lottery[b].Winnings;
  382.                     TempBought := Lottery[b].Tickets_Bought;
  383.                     Lottery[b].Name := Lottery[b+1].Name;
  384.                     Lottery[b].Cost := Lottery[b+1].Cost;
  385.                     Lottery[b].Winnings := Lottery[b+1].Winnings;
  386.                     Lottery[b].Tickets_Bought := Lottery[b+1].Tickets_Bought;
  387.                     Lottery[b+1].Name := TempName;
  388.                     Lottery[b+1].Cost := TempCost;
  389.                     Lottery[b+1].Winnings := TempWinnings;
  390.                     Lottery[b+1].Tickets_Bought := TempBought;
  391.                   END;
  392.             WRITELN ('Ticket                   Cost      Winnings  Tickets Bought AVG/Ticket  AVG/$1');
  393.             writeln ('------------------------------------------------------------------------------');
  394.             FOR a := 1 to count do
  395.               BEGIN
  396.                 WRITE (Lottery[a].Name, ' ':27-length(lottery[a].name));
  397.                 WRITE (Lottery[a].Cost);
  398.                 Write (' ':9);
  399.                 write (lottery[a].winnings);
  400.                 Str (Lottery[a].Winnings, S);
  401.                 write (' ':(10 - length(S)));
  402.                 write (lottery[a].Tickets_Bought);
  403.                 Str (Lottery[a].Tickets_Bought, S);
  404.                 write (' ':(14 - length(S)));
  405.                 write ((lottery[a].winnings / lottery[a].tickets_bought):5:3);
  406.                 writeln (' ':7, (lottery[a].winnings / (lottery[a].tickets_bought * lottery[a].cost)):5:3);
  407.               END;
  408.             writeln;
  409.             writeln ('Press Enter...');
  410.             readln;
  411.             CLRSCR;
  412.             writeln ('Total Tickets Bought = ', TotalTickets);
  413.             writeln ('Total Spent = ', TotalSpent);
  414.             writeln ('Total Winnings = ', TotalWinnings);
  415.             writeln ('Net Difference = ', (TotalWinnings - TotalSpent));
  416.             IF (TotalTickets <> 0) AND (TotalSpent <> 0) THEN
  417.               BEGIN
  418.                 writeln ('Overall Average Per Ticket = ', (TotalWinnings/TotalTickets):5:3);
  419.                 writeln ('Overall Average Per $1 = ', (TotalWinnings/TotalSpent):5:3);
  420.               END;
  421.             writeln;
  422.             write ('Press Enter...');
  423.             readln;
  424.           END
  425.         ELSE IF (ch = 'e') or (ch = 'E') THEN
  426.           BEGIN
  427.             CLRSCR;
  428.             FOR a := 1 to count DO
  429.               FOR b := 1 to (count - 1) DO
  430.                 IF ((Lottery[b].Winnings/Lottery[b].Tickets_Bought) < (Lottery[b+1].Winnings/Lottery[b+1].Tickets_Bought)) THEN
  431.                   BEGIN
  432.                     TempName := Lottery[b].Name;
  433.                     TempCost := Lottery[b].Cost;
  434.                     TempWinnings := Lottery[b].Winnings;
  435.                     TempBought := Lottery[b].Tickets_Bought;
  436.                     Lottery[b].Name := Lottery[b+1].Name;
  437.                     Lottery[b].Cost := Lottery[b+1].Cost;
  438.                     Lottery[b].Winnings := Lottery[b+1].Winnings;
  439.                     Lottery[b].Tickets_Bought := Lottery[b+1].Tickets_Bought;
  440.                     Lottery[b+1].Name := TempName;
  441.                     Lottery[b+1].Cost := TempCost;
  442.                     Lottery[b+1].Winnings := TempWinnings;
  443.                     Lottery[b+1].Tickets_Bought := TempBought;
  444.                   END;
  445.             WRITELN ('Ticket                   Cost      Winnings  Tickets Bought AVG/Ticket  AVG/$1');
  446.             writeln ('------------------------------------------------------------------------------');
  447.             FOR a := 1 to count do
  448.               BEGIN
  449.                 WRITE (Lottery[a].Name, ' ':27-length(lottery[a].name));
  450.                 WRITE (Lottery[a].Cost);
  451.                 Write (' ':9);
  452.                 write (lottery[a].winnings);
  453.                 Str (Lottery[a].Winnings, S);
  454.                 write (' ':(10 - length(S)));
  455.                 write (lottery[a].Tickets_Bought);
  456.                 Str (Lottery[a].Tickets_Bought, S);
  457.                 write (' ':(14 - length(S)));
  458.                 write ((lottery[a].winnings / lottery[a].tickets_bought):5:3);
  459.                 writeln (' ':7, (lottery[a].winnings / (lottery[a].tickets_bought * lottery[a].cost)):5:3);
  460.               END;
  461.             writeln;
  462.             writeln ('Press Enter...');
  463.             readln;
  464.             CLRSCR;
  465.             writeln ('Total Tickets Bought = ', TotalTickets);
  466.             writeln ('Total Spent = ', TotalSpent);
  467.             writeln ('Total Winnings = ', TotalWinnings);
  468.             writeln ('Net Difference = ', (TotalWinnings - TotalSpent));
  469.             IF (TotalTickets <> 0) AND (TotalSpent <> 0) THEN
  470.               BEGIN
  471.                 writeln ('Overall Average Per Ticket = ', (TotalWinnings/TotalTickets):5:3);
  472.                 writeln ('Overall Average Per $1 = ', (TotalWinnings/TotalSpent):5:3);
  473.               END;
  474.             writeln;
  475.             write ('Press Enter...');
  476.             readln;
  477.           END
  478.         ELSE IF (ch = 'f') or (ch = 'F') THEN
  479.           BEGIN
  480.             CLRSCR;
  481.             FOR a := 1 to count DO
  482.               FOR b := 1 to (count - 1) DO
  483.                 IF ((Lottery[b].Winnings/(Lottery[b].Tickets_Bought*Lottery[b].Cost)) <
  484.                    (Lottery[b+1].Winnings/(Lottery[b+1].Tickets_Bought*Lottery[b+1].Cost))) THEN
  485.                   BEGIN
  486.                     TempName := Lottery[b].Name;
  487.                     TempCost := Lottery[b].Cost;
  488.                     TempWinnings := Lottery[b].Winnings;
  489.                     TempBought := Lottery[b].Tickets_Bought;
  490.                     Lottery[b].Name := Lottery[b+1].Name;
  491.                     Lottery[b].Cost := Lottery[b+1].Cost;
  492.                     Lottery[b].Winnings := Lottery[b+1].Winnings;
  493.                     Lottery[b].Tickets_Bought := Lottery[b+1].Tickets_Bought;
  494.                     Lottery[b+1].Name := TempName;
  495.                     Lottery[b+1].Cost := TempCost;
  496.                     Lottery[b+1].Winnings := TempWinnings;
  497.                     Lottery[b+1].Tickets_Bought := TempBought;
  498.                   END;
  499.             WRITELN ('Ticket                   Cost      Winnings  Tickets Bought AVG/Ticket  AVG/$1');
  500.             writeln ('------------------------------------------------------------------------------');
  501.             FOR a := 1 to count do
  502.               BEGIN
  503.                 WRITE (Lottery[a].Name, ' ':27-length(lottery[a].name));
  504.                 WRITE (Lottery[a].Cost);
  505.                 Write (' ':9);
  506.                 write (lottery[a].winnings);
  507.                 Str (Lottery[a].Winnings, S);
  508.                 write (' ':(10 - length(S)));
  509.                 write (lottery[a].Tickets_Bought);
  510.                 Str (Lottery[a].Tickets_Bought, S);
  511.                 write (' ':(14 - length(S)));
  512.                 write ((lottery[a].winnings / lottery[a].tickets_bought):5:3);
  513.                 writeln (' ':7, (lottery[a].winnings / (lottery[a].tickets_bought * lottery[a].cost)):5:3);
  514.               END;
  515.             writeln;
  516.             writeln ('Press Enter...');
  517.             readln;
  518.             CLRSCR;
  519.             writeln ('Total Tickets Bought = ', TotalTickets);
  520.             writeln ('Total Spent = ', TotalSpent);
  521.             writeln ('Total Winnings = ', TotalWinnings);
  522.             writeln ('Net Difference = ', (TotalWinnings - TotalSpent));
  523.             IF (TotalTickets <> 0) AND (TotalSpent <> 0) THEN
  524.               BEGIN
  525.                 writeln ('Overall Average Per Ticket = ', (TotalWinnings/TotalTickets):5:3);
  526.                 writeln ('Overall Average Per $1 = ', (TotalWinnings/TotalSpent):5:3);
  527.               END;
  528.             writeln;
  529.             write ('Press Enter...');
  530.             readln;
  531.           END;
  532.       END
  533.     ELSE IF (ch = 'F') or (ch = 'f') THEN
  534.       BEGIN
  535.         CLRSCR;
  536.         WRITELN ('Hope you hit BIG!');
  537.         Halt;
  538.       END;
  539.   UNTIL Prog_Done;
  540. END.